// piu classi base

#include <iostream>
using namespace std;

class base1
{
protected:
int i;
public:
base1(int x) {i=x;cout<<"costruzione di base1\n";}
~base1() {cout<<"distruzione di base1\n";}
};


class base2
{
protected:
int k;
public:
base2(int x) {k=x; cout<<"costruzione di base2\n";}
~base2() {cout<<"distruzione di base2\n";}
};

// il costruttore della classe base deve dichiarare tuti i propri parametri e tutti quelli richiesti
// dalla classe base

class derivata :public base1, public base2
{
int j;
public:
derivata(int x, int y, int z):base1(y),base2(z)
{j=x; cout<<"costruzione di derived\n";}
~derivata(){cout<<"distruzione di derivata\n";}
void mostra() {cout <<i<<""<<j<<""<<k<<"\n"; }
};


int main()
{
derivata ob(3,4,5);
ob.mostra();
return 0;
}


/*
costruzione di base1
costruzione di base2
costruzione di derived
435
distruzione di derivata
distruzione di base2
distruzione di base1
Press any key to continue
*/
